// api/modules/membership.js
import request from '../index'
import { message } from '@/utils'

export default {
  // 获取用户当前会员信息
  getUserMembership() {
    return request.get('/user/membership/info')
  },

  // 获取所有会员等级
  getAllLevels() {
    return request.get('/user/membership/levels')
  },

  // 获取会员等级详情
  getLevelById(levelId) {
    return request.get(`/user/membership/levels/${levelId}`)
  },

  // 获取剩余聊天次数
  getRemainingChatCount() {
    return request.get('/user/membership/chat/remaining') 
  },

  // 获取剩余切换次数
  getRemainingSwitchCount() {
    return request.get('/user/membership/switch/remaining')
  },

  // 检查聊天次数是否足够
  checkChatCount() {
    return request.post('/user/membership/check/chat')
  },

  // 检查切换次数是否足够
  checkSwitchCount() {
    return request.post('/user/membership/check/switch')
  },

  // 消费聊天次数
  consumeChatCount() {
    return request.post('/user/membership/consume/chat')
  },

  // 消费切换次数  
  consumeSwitchCount() {
    return request.post('/user/membership/consume/switch')
  },

  // 刷新每日token
  refreshDailyTokens() {
    return request.post('/user/membership/refresh')
  },

  // 创建会员订阅订单 - 增强日志
  createSubscription(params) {
    console.log('【会员订阅】开始创建订阅订单，参数:', JSON.stringify(params));
    
    // 添加客户端IP
    if (!params.clientIp) {
      params.clientIp = '127.0.0.1';
      console.log('【会员订阅】未提供客户端IP，使用默认IP');
    }
    
    // 确保包含用户ID
    if (!params.userId) {
      const userStore = useUserStore();
      params.userId = userStore.userId;
      console.log('【会员订阅】自动添加用户ID:', params.userId);
    }
    
    return request.post('/wechat/membership/pay', params, {
      headers: {
        'Content-Type': 'application/json'
      }
    })
      .then(res => {
        console.log('【会员订阅】订单创建响应:', JSON.stringify(res));
        if(res.code !== 200) {
          console.error('【会员订阅】创建订单失败:', res.message);
        }
        return res;
      })
      .catch(err => {
        console.error('【会员订阅】创建订单请求异常:', err);
        throw err;
      });
  },

  // 获取订阅订单详情 - 增强日志
  getSubscriptionOrder(orderId) {
    console.log('【会员订阅】查询订单详情, orderId:', orderId);
    
    return request.get(`/wechat/membership/pay/order/${orderId}`)
      .then(res => {
        console.log('【会员订阅】订单查询响应:', JSON.stringify(res));
        if(res.code !== 200) {
          console.warn('【会员订阅】查询订单失败:', res.message);
        } else if(res.data && res.data.localOrder) {
          console.log('【会员订阅】订单状态:', res.data.status, '附加信息:', res.data.localOrder.attach);
        }
        return res;
      })
      .catch(err => {
        console.error('【会员订阅】查询订单异常:', err);
        throw err;
      });
  },

  // 处理支付成功回调
  async handlePaymentSuccess(orderId) {
    console.log('【会员订阅】处理支付成功回调, orderId:', orderId);
    if (!orderId) {
      console.error('【会员订阅】订单ID为空');
      message.error('订单ID不能为空');
      return false;
    }
    
    try {
      // 使用新的JSON格式接口
      console.log('【会员订阅】发送支付成功回调请求, orderId:', orderId);
      const res = await request.post(`/user/membership/payment-callback/${orderId}`, {
        // 可以在这里添加额外参数
        timestamp: Date.now()
      });
      console.log('【会员订阅】处理支付回调响应:', JSON.stringify(res));

      if (res.code === 200) {
        console.log('【会员订阅】支付回调处理成功');
        message.success('会员已开通');
        return true;
      } else {
        console.error('【会员订阅】支付回调处理失败, 状态码:', res.code, '消息:', res.message);
        message.error(res.message || '处理支付结果失败');
      }
      
      return false;
    } catch (error) {
      console.error('【会员订阅】处理支付回调异常:', error);
      message.error('处理支付状态失败');
      return false;
    }
  },

  // 取消订阅
  cancelSubscription() {
    return request.post('/user/membership/subscription/cancel')
  },

  // 续订会员
  renewSubscription(params) {
    return request.post('/user/membership/subscription/renew', params)
  },

  createOrder(params, config = {}) {
    console.log('【支付服务】创建支付订单, 参数:', JSON.stringify(params));
    
    // 参数校验
    if (!params || !params.orderId || !params.orderType || !params.payMethod) {
      console.error('【支付服务】创建支付订单失败: 参数不完整', params);
      return Promise.reject(new Error('创建支付订单参数不完整'));
    }
    
    return request.post('/wechat/pay/create', params, config)
      .then(res => {
        console.log('【支付服务】创建支付订单响应:', JSON.stringify(res));
        if(res.code !== 200) {
          console.error('【支付服务】创建支付订单失败:', res.message);
        } else {
          console.log('【支付服务】支付参数:', JSON.stringify(res.data));
        }
        return res;
      })
      .catch(err => {
        console.error('【支付服务】创建支付订单异常:', err);
        throw err;
      });
  },

  // 取消支付订单
  cancelPayment(orderId) {
    console.log('【支付服务】取消支付订单, orderId:', orderId);
    
    if (!orderId) {
      console.error('【支付服务】取消支付订单失败: 缺少订单ID');
      return Promise.reject(new Error('取消支付订单参数不完整'));
    }
    
    return request.post('/wechat/pay/cancel', { orderId })
      .then(res => {
        console.log('【支付服务】取消支付订单响应:', JSON.stringify(res));
        return res;
      })
      .catch(err => {
        console.error('【支付服务】取消支付订单异常:', err);
        throw err;
      });
  }
}